/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/

// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5

KindEditor.plugin('baidumap',
    function (K) {
        var self = this, name = 'baidumap', lang = self.lang(name + '.');
        var mapWidth = K.undef(self.mapWidth, 558);
        var mapHeight = K.undef(self.mapHeight, 360);
        self.clickToolbar(name,
            function () {
                var html = [
                    '<div style="padding:10px 20px;">',
                    '<div class="ke-header">',
                    // left start
                    '<div class="ke-left">',
                    lang.address +
                    ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
                    '<span class="ke-button-common ke-button-outer">',
                    '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' +
                    lang.search +
                    '" />',
                    '</span>',
                    '</div>',
                    // right start
                    '<div class="ke-right">',
                    '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' +
                    lang.insertDynamicMap +
                    '</label>',
                    '</div>',
                    '<div class="ke-clearfix"></div>',
                    '</div>',
                    '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>',
                    '</div>'
                ].join('');
                var dialog = self.createDialog({
                    name: name,
                    width: mapWidth + 42,
                    title: self.lang(name),
                    body: html,
                    yesBtn: {
                        name: self.lang('yes'),
                        click: function (e) {
                            var map = win.map;
                            var centerObj = map.getCenter();
                            var center = centerObj.lng + ',' + centerObj.lat;
                            var zoom = map.getZoom();
                            var url = [
                                checkbox[0].checked
                                    ? self.pluginsPath + 'baidumap/index.html'
                                    : 'http://api.map.baidu.com/staticimage',
                                '?center=' + encodeURIComponent(center),
                                '&zoom=' + encodeURIComponent(zoom),
                                '&width=' + mapWidth,
                                '&height=' + mapHeight,
                                '&markers=' + encodeURIComponent(center),
                                '&markerStyles=' + encodeURIComponent('l,A')
                            ].join('');
                            if (checkbox[0].checked) {
                                self.insertHtml('<iframe src="' +
                                    url +
                                    '" frameborder="0" style="width:' +
                                    (mapWidth + 2) +
                                    'px;height:' +
                                    (mapHeight + 2) +
                                    'px;"></iframe>');
                            } else {
                                self.exec('insertimage', url);
                            }
                            self.hideDialog().focus();
                        }
                    },
                    beforeRemove: function () {
                        searchBtn.remove();
                        if (doc) {
                            doc.write('');
                        }
                        iframe.remove();
                    }
                });
                var div = dialog.div,
                    addressBox = K('[name="address"]', div),
                    searchBtn = K('[name="searchBtn"]', div),
                    checkbox = K('[name="insertDynamicMap"]', dialog.div),
                    win,
                    doc;
                var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' +
                    self.pluginsPath +
                    'baidumap/map.html" style="width:' +
                    mapWidth +
                    'px;height:' +
                    mapHeight +
                    'px;"></iframe>');

                function ready() {
                    win = iframe[0].contentWindow;
                    doc = K.iframeDoc(iframe);
                }

                iframe.bind('load',
                    function () {
                        iframe.unbind('load');
                        if (K.IE) {
                            ready();
                        } else {
                            setTimeout(ready, 0);
                        }
                    });
                K('.ke-map', div).replaceWith(iframe);
                // search map
                searchBtn.click(function () {
                    win.search(addressBox.val());
                });
            });
    });